#include <stdio.h>
#include <ctype.h>

/*以下答案综合了多位博主的答案，还有百度搜索结果*/

int myisupper(int c)
{
return ((_Ctype[(unsigned char)c] & _UP) != 0);
}
//上面的代码是标准库中isupper函数的实现方式

int my1isupper(int c)
{
return (c >= 'A' && c <= 'Z');
}
//上面的代码是空间最优的实现方式

#define my2isupper(c) ((c >= 'A' && c <= 'Z') ? 1 : 0;)
//上面的代码是时间最优的实现方式，减少了函数调用，缩短运行时间

/*但是上面的两种实现方式在遇到EBCDIC码表时会失败，因为EBCDIC码表中字母的排
列顺序并不像ASCII码表那样，它的英文字母不是连续地排列，中间出现多次断续*/

int main()
{
	printf("%s\n", myisuppera('a') ? "true" : "flase");
	return 0;
}
